<?php
namespace boboyu\tool;

/**
 * 加载器类
 * Class Load
 * @method view(string $view_path, array $params) 视图
 * @method helper(string $path) 助手函数
 * @method config(string $path) 配置文件
 * @package boboyu\tool
 */
class Load
{

    /**
     * 加载模型。自动大写参数1的首字母并添加_model后缀
     * @param string      $name
     * @param string|null $alias
     * @return object
     */
    public static function model($name, $alias = NULL)
    {
        // 如果为多级目录的话
        if (stripos($name, '/') !== FALSE){
            $name = explode('/', $name);
            $i = count($name) - 1; // 最后一个成员的索引
            if (empty($alias)) $alias = $name[$i];
            $name[$i] = ucfirst($name[$i]) . '_model';
            $name = implode('/', $name);
        } else {
            if (empty($alias)) $alias = $name;
            $name = ucfirst($name) . '_model';
        }

        return $GLOBALS['ci']->load->model($name, $alias);
    }

    /**
     * 加载类库
     * @param string      $name
     * @param string|null $alias
     * @param array|null  $params
     * @return mixed
     */
    public static function library($name, $alias = NULL, $params = NULL)
    {
        // 如果为多级目录的话
        if (stripos($name, '/') !== FALSE){
            $segment = explode('/', $name);
            $i = count($segment) - 1; // 最后一个成员的索引
            if (empty($alias)) $alias = $segment[$i];
        } else {
            if (empty($alias)) $alias = $name;
        }

        return $GLOBALS['ci']->load->library($name, $params, $alias);
    }

    /**
     * 转发所有静态方法到ci->load对象
     * @param string $name
     * @param array  $arguments
     * @return mixed
     */
    public static function __callStatic($name, $arguments)
    {
        return call_user_func_array(array($GLOBALS['ci']->load, $name), $arguments);
    }
}